A mobile computing device, such as a smart phone, contains a multi-core chip to provide computing power. Examples of processing cores include a Digital Signal Processor (DSP) core, a Graphics Processing Unit (GPU), a Central Processing Unit (CPU), a modem, and a camera core. Each core may have multiple sub cores. For instance, a GPU may include shaders and accumulators as sub cores, a DSP and a CPU may each include different processing units as sub cores.
Furthermore, each of the different sub cores may belong to a separate power domain. As an illustration, a core may be programmed to save power consumption by reducing a voltage to a sub core or turning power off altogether for a sub core that is not in use at a given time. When that sub core is in use, the processor restores full power to that sub core. In other words, each of the different sub cores are powered independently and may be turned on and off independently.
In one conventional example, each of the different sub cores is shaped as a rectangle or rectilinear shape. During design of the core, each of the different sub cores belongs to a different team, and each team is assigned a particular shape to work with so that the different sub cores may be placed together. Each team designs its sub core to fit the shape it is given, with the goal that the shapes should fit together in the final product. These well-defined rectangles or rectilinear shapes, separated from each other by some amount of area, simplify power domain partitioning. However, the space between the shapes may sometimes be considered wasted, whereas space on a semiconductor die is valued highly as miniaturization of devices is a priority in some applications.
Furthermore, the design process including assigning design teams to particular shapes can be well compartmentalized and efficient, but it may require multiple iterations when one or more of the design teams determines that the shape it is given may not allow it to meet constraints. Constraints include, e.g., data timing constraints and power constraints. The iterations may require negotiations among the different design teams and a manager of the core project. After several iterations, the design may be ready to be assembled together and to be taped out.
There is currently a need for a design that is more efficient with respect to space between cores and for a design process that is more efficient and has fewer iterations.